<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        function Star(name, age) {
            
            this.name = name
            this.age = age
            // 在实例对象中添加一个方法  实例对象的方法，只能是实例对象调用
            this.sing = function(){ 
                console.log('实例对象刘德华唱歌'); 
            }
        }
        // 静态方法是添加构造函数上的方法，只能是构造函数可以调用
        Star.dance = function(){
            console.log('静态方法');
            
        }
        // 原型对象  Star.prototype指的是构造函数的原型对象
       console.log(typeof  Star.prototype);
       console.log( Star.prototype);
           Star.prototype.username = 'zs'
        //    Star.prototype.song = function(){
        //     console.log('song');
            
        //    }

        // 对象原型：指的是实例对象的原型 ldh.__proto__   ===  Star.prototype
        //  先获取实例对象本身的属性和方法，如果自己没有 再去找原型对象的属性和方法
        //  如果再没有找到就报错
       
        // ldh指的是实例对象
       const ldh =  new Star('刘德华',18)
       console.log(ldh);
       ldh.sing(ldh)
        console.log('ldh.username ',ldh.username );
        // ldh.song()
       


    </script>
</head>

<body>

</body>

</html>